//
// Created by qsy on 2023/8/21.
//

#ifndef CHECK_C8T6_NODESYSTEMINFO_H
#define CHECK_C8T6_NODESYSTEMINFO_H
#include "main.h"

#define EEPROM_START_ADDR    0

//  系统状态标志位， 位域，16bit，
typedef struct __SystemStatus{
    unsigned Idle: 1;          // 空闲
    unsigned Trial_Ready: 1;   // 测试准备
    unsigned Trial_On: 1;      // 测试中
    unsigned Trial_Stop: 1;     // 测试停止
    unsigned Trial_Err: 1;     // 测试异常
    unsigned ZeroClear: 1;     // 清零
    unsigned DebugMode: 1;     // 调试模式

    unsigned Trial_Idle: 1;      // 保留

}SystemStatusFrm;   // 16 bit

//  系统信息存储
typedef struct _STRUCT_NodeSys_Data
{
    uint8_t ConfigStatus;  // EEPROM写入字
    uint8_t SlaveID;       // modbus ID
    uint8_t IP_addr[4];       // modbus TCP IP地址
    uint8_t chksum;       // 校验和
    uint8_t reserve;       // 对齐
    uint16_t portNumber;   //16位的端口号
}NodeSysInfoFrm;  // 10bytes


//  系统信息存储
typedef struct _STRUCT_PCtoDeviceData
{
    uint8_t head1;  // EEPROM写入字
    uint8_t head2;       // modbus ID
    uint8_t SlaveID;       // modbus ID
    uint8_t IP_addr[4];       // modbus TCP IP地址
    uint8_t chksum;       // 校验和
}PCtoDeviceDataFrm;  // 8bytes

extern NodeSysInfoFrm NodeSysInfo;

void USART1_RxData_Parse(void);
void NodeInfo_Init(void);
void NodeInfo_Write_toEEPROM(void);
void NodeInfo_Read_fromEEPROM(void);
void SystemWrite_test(void);
#endif //CHECK_C8T6_NODESYSTEMINFO_H
